package thread;

public class SyncDemo3 {
    public static void main(String[] args) {
        /*Foo f1 = new Foo();
        Foo f2 = new Foo();
        new Thread(()->f1.dosome()).start();
        new Thread(()->f2.dosome()).start();*/
        new Thread(Foo::dosome).start();
        new Thread(Foo::dosome).start();
    }
}
class Foo{
    //public synchronized static void dosome(){
    public static void dosome(){
        /*
        * 在静态方法中使用同步块时，同步监视器对象还是使用当前类对象
        * 获取类对象的方式：类名.class
        * 例如获取Foo的类对象就是：Foo.class */
        synchronized (Foo.class) {
            try {
                Thread t = Thread.currentThread();
                System.out.println(t.getName() + "正在执行dosome方法");
                Thread.sleep(5000);
                System.out.println(t.getName() + "执行结束");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
